package com.egao.generator.expand;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by longhao on 2021/11/2
 */
public class UpdateUtil {
    private String baseDir;  // 项目缓存位置

    // 项目模板路径
    public String getBaseDir() {
        return this.baseDir;
    }

    // 前端文件存放路径
    public String getFrontendDir() {
        return this.baseDir + "frontendPath/";
    }

    public UpdateUtil(int index) {
        this.baseDir = File.listRoots()[index] + "/Users/longhao/updateUtil/";
    }

    public File getFile(String path) {
        return new File(getFrontendDir(), path);
    }


    /**
     * 获取文件列表
     */
    public List<Map<String, Object>> listTpl() {
        File dir=new File(getFrontendDir());
        List<Map<String, Object>> list = new ArrayList<>();
        if (!dir.exists() && dir.mkdirs()) return list;
        File[] files = dir.listFiles();
        if (files == null) return list;
        for (File f : files) {
            Map<String, Object> map = new HashMap<>();
            map.put("name", f.getName());
            map.put("size", f.length());
            list.add(map);
        }
        return list;
    }

    public boolean delete(String filename){
        File f=getFile(filename);
        if (f.exists()){
            f.delete();
            return true;
        }
        return false;
    }

    /**
     * 上传文件
     */
    public boolean upload(MultipartFile file) {
        String name = file.getOriginalFilename();
        if (name == null) return false;
        String[] names=name.split("\\.");
        if (names.length<2){
            return false;
        }
        StringBuilder sb=new StringBuilder();
        sb.append(names[0]+"-"+System.currentTimeMillis());
        for (int i=1;i<names.length;i++){
            sb.append("."+names[i]);
        }
        name=sb.toString();
        File f = new File(getFrontendDir(), name);
        if (!f.getParentFile().exists() && !f.getParentFile().mkdirs()) return false;
        try {
            file.transferTo(f);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}
